//
// Created by lanlu on 2025/8/4.
//

#include <iostream>
#include <string>
#include <unordered_set>
#include <vector>
using namespace std;

class Solution {
public:
    int uniqueMorseRepresentations(vector<string> &words)
    {
        vector<string> morse = {
            ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---",
            ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
        };

        // 去重可以使用set
        unordered_set<string> set;

        // 将words中的明文转换成密文
        for (string word: words)
        {
            // 每个单词转换后的密文
            string code;
            for (char c: word)
            {
                // 字符是a 位置是0  a-a
                // 字符是z 位置是25  z-a
                int index = c - 'a';
                code += morse[index];
            }
            // 将每个单词加密后的结果扔到set中
            set.insert(code);
        }
        // 返回去重后的个数
        return set.size();
    }
};

int main()
{
    Solution s;
    vector<string> words = {"gin", "zen", "gig", "msg"};
    cout << s.uniqueMorseRepresentations(words) << endl;
}
